package com.wyhello.tube4.facade;

import java.util.List;
import java.util.Map;

import com.wyhello.tube4.pojo.Appendix;
import com.wyhello.tube4.pojo.Bag;
import com.wyhello.tube4.pojo.Dictionary;
import com.wyhello.tube4.pojo.Draw;
import com.wyhello.tube4.pojo.Exchange;
import com.wyhello.tube4.pojo.Macroscopic;
import com.wyhello.tube4.pojo.Reality;
import com.wyhello.tube4.pojo.Position;
import com.wyhello.tube4.pojo.Reside;
import com.wyhello.tube4.pojo.Tube;
import com.wyhello.tube4.pojo.User;
import com.wyhello.tube4.pojo.Working;

public interface TubeFacade {
	//登录验证
	public User querylogin(User user);
	/**
	 * 修改密码
	 * @param user
	 * @return
	 */
	public boolean updatepw(User user);
	//归属信息
	/**
	 * 归属信息信息的录入
	 * @param reside 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean saveUser(User user);
	/**
	 * 用户信息的录入
	 * @param user 要录入的信息
	 * @return 返回是否录入成功
	 */
	public int deleteUser(String ids);
	public void deleteUS(User user); 
	/**
	 * 对用户信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public List<User> queryUser();
	/**
	 * 查询所有的用户信息
	 * @return 返回所有用户信息
	 */
	public User getUserById(int id);
	/**
	 * 根据id查询用户信息
	 * @param id 要查询的id
	 * @return 返回id信息
	 */
	public boolean updateUser(User user);
	/**
	 * 对用户信息进行修改
	 * @param user 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean saveReside(Reside reside);
	/**
	 * 对归属信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteReside(String ids);
	public void deleteOj(Reside reside);
	/**
	 * 查询所有的归属信息
	 * @return 返回所有归属信息
	 */
	public List<Reside>queryReside();
	/**
	 * 根据id查询归属信息
	 * @param id 要查询的id
	 * @return 为ID的归属信息
	 */
	public Reside getResideById(int id);
	/**
	 * 对归属信息进行修改
	 * @param reside 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updateReside(Reside reside);
	
	//宏观测量信息
	/**
	 * 宏观测量信息的录入
	 * @param macroscopic
	 * @return
	 * 信息录入是否成功
	 */
	public boolean saveMacroscopic(Macroscopic macroscopic);
	/**
	 * 批量删除信息
	 * 返回删除的条数
	 */
	public int deleteMacroscopic(String ids);
	/**
	 * 查询全部数据信息
	 * @return 全部数据的结果
	 */
	public List<Macroscopic> queryMacroscopic(int offset);
	public List<Macroscopic> queryMacTime(int offset,String begin,String end);
	/**
	 * 根据ID查询一条信息的数据
	 * @param id 传入要查询的id
	 * @return 返回该ID的结果
	 */
	public Macroscopic getMacroscopicById(int id);
	/**
	 * 根据传入的对象进行修改
	 * @param macroscopic 修改后的数据
	 * @return 是否修改成功
	 */
	public boolean updateMacroscopic(Macroscopic macroscopic);
	/**
	 * 制定位置ID和时间限制查询检查信息
	 * @param positionId
	 * @param begin
	 * @param end
	 * @return
	 */
	public List<Macroscopic> queryMacroscopicTime(int positionId, String begin,
			String end);

	//运行记录
	/**
	 * 运行记录信息的录入
	 * @param working 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean saveWorking(Working working);
	/**
	 * 对运行记录进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteWorking(String ids);
	/**
	 * 查询所有的运行记录
	 * @return 返回所有运行记录
	 */
	public List<Working> queryWorking();
	/**
	 * 根据id查询运行记录
	 * @param id 要查询的id
	 * @return 为ID的运行记录
	 */
	public Working getWorkingById(int id);
	/**
	 * 对运行记录进行修改
	 * @param working 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updateWorking(Working working);
	
	//数据字典
	/**
	 * 数据字典的录入
	 * @param dictionary 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean saveDictionary(Dictionary dictionary);
	/**
	 * 对数据字典进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteDictionary(String ids);
	/**
	 * 查询所有的数据字典
	 * @return 返回所有图纸信息
	 */
	public List<Dictionary> queryDictionary();
	/**
	 * 根据id查询数据字典
	 * @param id 要查询的id
	 * @return 为ID的数据字典
	 */
	public Dictionary getDictionaryById(int id);
	/**
	 * 根据type查询数据字典
	 *
	 * @return 
	 */
	public List<Dictionary> queryDictionaryByType();
	public List<Dictionary> queryDictionaryByWeld();
	public List<Dictionary> queryDictionaryByWire();
	//锅炉
	/**
	 * 查询所有的锅炉
	 * @return
	 */
	public List<Reside> queryResideByBoiler();
	/**
	 * 根据级别查询信息
	 * @param level 级别
	 * @return 信息
	 */
	public List<Reside> queryResideByLevel(int level);
	/**
	 * 根据锅炉查询运行记录
	 * @param ResideId 锅炉Id
	 * @return 运行记录
	 */
	public List<Working> queryWorkingByResideId(int resideId);
	/**
	 * 根据锅炉ID查询有结束日期
	 * @param working 锅炉id
	 * @return 信息列表
	 */
	public List<Working> queryWorkingEndByResideId(int resideId);
	//实际测量
	/**
	 * 实际测量信息的录入
	 * @param reality 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean saveReality(Reality reality);
	/**
	 * 对实际测量的信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteReality(String ids);
	/**
	 * 查询所有的实际测量信息
	 * @return 返回所有实际测量的信息
	 */
	public List<Reality> queryReality(int offset);
	public List<Reality> queryRealTime(int offset,String begin,String end);
	/**
	 * 根据id查询实际测量信息
	 * @param id 要查询的id
	 * @return 为ID的实际测量信息
	 */
	public Reality  getRealityById(int id);
	/**
	 * 对实际信息进行修改
	 * @param reality 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updateReality(Reality reality);
	/**
	 * 查询指定位置下实测记录的最大ID值
	 * @param positionId 
	 * @return 
	 */
	public int queryRealityMaxId(int positionId);
	
	//管信息
	/**
	 * 管信息的录入
	 * @param change 要录入的管信息
	 * @return 返回是否录入成功
	 */
	public boolean saveTube(Tube tube);
	/**
	 * 对管信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteTube(String ids);
	public void deleteTOj(Tube tube);
	/**
	 * 查询所有的管信息
	 * @return 返回所有管信息
	 */
	public List<Tube> queryTube();
	/**
	 * 根据id查询管信息
	 * @param id 要查询的id
	 * @return 为ID的管信息
	 */
	public Tube  getTubeById(int id);
	/**
	 * 对管信息进行修改
	 * @param tube 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updateTube(Tube tube);
	/**
	 * 根据管排Id查询管的数量
	 * @param resideId
	 * @return
	 */
	public int queryCountTubeByResideId(int resideId);
	//位置记录
	/**
	 * 位置记录信息的录入
	 * @param position 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean savePosition(Position position);
	/**
	 * 对换位置录的信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deletePosition(String ids);
	public void deletePOj(Position position);
	/**
	 * 查询所有的位置记录信息
	 * @return 返回所有位置记录的信息
	 */
	public List<Position> queryPosition();
	/**
	 * 根据id查询位置记录信息
	 * @param id 要查询的id
	 * @return 为ID的位置记录信息
	 */
	public Position getPositionById(int id);
	/**
	 * 对位置记录进行修改
	 * @param position 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updatePosition(Position position);
	//图纸信息
	/**
	 * 图纸信息的录入
	 * @param Draw 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean saveDraw(Draw Draw);
	/**
	 * 对图纸信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteDraw(String ids);
	/**
	 * 查询所有的图纸信息
	 * @return 返回所有图纸信息
	 */
	public List<Draw> queryDraw();
	/**
	 * 根据id查询图纸信息
	 * @param id 要查询的id
	 * @return 为ID的图纸
	 */
	public Draw  getDrawById(int id);
	//换管记录
	/**
	 * 换管记录信息的录入
	 * @param change 要录入的信息
	 * @return 返回是否录入成功
	 */
	public boolean saveChange(Exchange change);
	/**
	 * 对换管记录的信息进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteChange(String ids);
	/**
	 * 查询所有的换管记录信息
	 * @return 返回所有换管记录的信息
	 */
	public List<Exchange> queryChange();
	/**
	 * 根据id查询换管记录信息
	 * @param id 要查询的id
	 * @return 为ID的换管记录信息
	 */
	public Exchange getChangeById(int id);
	/**
	 * 对换管记录进行修改
	 * @param change 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updateChange(Exchange change);
	/**
	 * 查询宏观记录数量
	 * @return
	 */
	public int queryCountMacroscopic();
	/**
	 * 查询实测记录数量
	 * @return
	 */
	public int queryCountReality();
	public int queryCountMacTime(String begin,String end);
	public int queryCountReaTime(String begin, String end);
	public List<Reality> queryRealityTime(int positionId,String begin,String end, String type);
	/**
	 * 查询需要报警的记录
	 * @return
	 */
	public List<Reality> queryRealityWarn();
	/**
	 * 最近一次运行记录
	 * @param working
	 * @return 信息列表
	 */
	public List<Working> queryWorkingForWarn();
	//记录包
	/**
	 * 实测记录包
	 * @param bag 包
	 * @return 返回是否录入成功
	 */
	public boolean saveBag(Bag bag);
	/**
	 * 对包进行批量删除
	 * @param ids 要删除的id
	 * @return 返回删除的条数
	 */
	public int deleteBag(String ids);
	/**
	 * 查询所有包
	 * @return 返回所有包
	 */
	public List<Bag> queryBag(int resideId);
	/**
	 * 根据id查询换管记录信息
	 * @param id 要查询的id
	 * @return 为ID的换管记录信息
	 */
	public Bag getBagById(int id);
	/**
	 * 对包进行修改
	 * @param bag 修改后的信息
	 * @return 修改是否成功
	 */
	public boolean updateBag(Bag bag);
	/**
	 * 查询最大ID值
	 * @param positionId 
	 * @return 
	 */
	public int queryBagMaxId(int resideId);
	public boolean queryNoWorkingEndByResideId(int resideId);
	/**
	 * 查询field在positionIds里所有测量记录中的最大值
	 * @param field 字段
	 * @param positionIds 位置id
	 * @return
	 */
	public String queryRealityMaxByPosIds(String field,String positionIds,String bagId);
	/**
	 * 查询field在positionIds里所有测量记录中的最小值
	 * @param field
	 * @param positionIds
	 * @return
	 */
	public String queryRealityMinByPosIds(String field,String positionIds,String bagId);
	/**
	 * 查询field在positionIds里所有测量记录中的平均值
	 * @param field
	 * @param positionIds
	 * @return
	 */
	public String queryRealityAvgByPosIds(String field,String positionIds,String bagId);
	
	/**
	 * 根据父记录id查询子记录集
	 * @param id
	 * @return
	 */
	public List<Reside> queryResidesByParendID(int id);
	
	/**
	 * 根据父记录id查询子记录的数量
	 * @param parentId
	 * @return
	 */
	public int queryCountOfChildrenByParentId(int parentId);
	
	
	Map<Integer,List<Position>> getPositionsNotCheckedThisYear(int boilerId, int count);
	Map<Integer,List<Position>> getPositionsNotCheckedLasttime(int boilerId, int count);
	Map<Integer,List<Position>> getPositionNeverChecked(int boilerId, int count);
	List getAnyliseRow(String field, String begin, String end, int rowId);
	List getAnyliseSurface(String field, String begin, String end, int surfaceId);
	List getAnyliseBoiler(String field, String begin, String end, int boilerId);
	List getRealityPieRow(String realField, String warnField, int rowId);
	List getRealityPieSurface(String realField, String warnField, int surfaceId);
	List getRealityPieBoiler(String realField, String warnField, int boilerId);
	List getMacroscopicPieRow(String field, int rowId);
	List getMacroscopicPieSurface(String field, int surfaceId);
	List getMacroscopicPieBoiler(String field, int boilerId);
		
	List<Reside> queryExchangeRowBySurfaceId(int surfaceid);
	List<Tube> queryExchangeTubeByRowId(int rowid);
	public List<Position> queryExchangePositionByTubeId(int id);
	public List<Exchange> queryExchangeByPositionId(int id);
	public int deleteExchangeById(int id);
	
	public boolean saveAppendix(Appendix appendix);
	public List<Appendix> getAppendixList(int objid,String objname);
}
